Published on

Nestjs 공식문서 부수기 [4]

NestJS의 공식문서를 보며 직접 따라해보고 배워보도록 하겠습니다. (NestJS, n.d.)

Providers

Providers의 주요 아이디어 는 종속성 으로 주입 될 수 있다는 것입니다 . 즉, 개체는 서로 다양한 관계를 생성할 수 있으며 개체의 인스턴스를 "연결"하는 기능은 대부분 Nest 런타임 시스템에 위임될 수 있습니다.

provider

컨트롤러는 HTTP 요청을 처리하고 더 복잡한 작업을 Providers에게 위임해야 합니다 . 공급자는 모듈providers 에서와 같이 선언된 일반 JavaScript 클래스입니다 .

힌트 Nest를 사용하면 종속성을 보다 OO 방식으로 설계하고 구성할 수 있으므로 SOLID 원칙 을 따르는 것이 좋습니다 .

서비스

서비스는 데이터 저장 및 검색을 담당하며 에서 사용하도록 설계되었습니다.

ts
import { Injectable } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';

@Injectable()
export class CatsService {
  private readonly cats: Cat[] = [];

  create(cat: Cat) {
    this.cats.push(cat);
  }

  findAll(): Cat[] {
    return this.cats;
  }
}

힌트 CLI를 사용하여 서비스를 생성하려면 nest g service cats명령을 실행하기만 하면 됩니다.

@Injectable()는 Nest IoC 컨테이너에서 관리할 수 있는 클래스임을 선언하고 메타데이터를 첨부합니다 .

ts
import { Controller, Get, Post, Body } from '@nestjs/common';
import { CreateCatDto } from './dto/create-cat.dto';
import { CatsService } from './cats.service';
import { Cat } from './interfaces/cat.interface';

@Controller('cats')
export class CatsController {
  constructor(private catsService: CatsService) {}

  @Post()
  async create(@Body() createCatDto: CreateCatDto) {
    this.catsService.create(createCatDto);
  }

  @Get()
  async findAll(): Promise<Cat[]> {
    return this.catsService.findAll();
  }
}

private구문 의 사용에 유의하십시오.이 구문을 사용 하면 동일한 위치에서 즉시 멤버를 선언하고 초기화할 수 있습니다.

의존성 주입

Nest는 일반적으로 종속성 주입 디자인 패턴을 기반으로 구축되었습니다 . 공식 Angular 문서 에서 이 개념에 대한 훌륭한 기사를 읽는 것이 좋습니다.

공식 Angular문서에서 이 개념에 대한 글을 읽을 수 있습니다.

Providers 등록

이전 글의 controller과 같이 모듈에 서비스를 추가 합니다.

app.module.ts
import { Module } from '@nestjs/common';
import { CatsController } from './cats/cats.controller';
import { CatsService } from './cats/cats.service';

@Module({
  controllers: [CatsController],
  providers: [CatsService],
})
export class AppModule {}

Nest는 이제 클래스 의 종속성을 해결할 수 있습니다.

이전 글

Nestjs 공식문서 부수기 [3]

다음 글

Nestjs 공식문서 부수기 [5]

NestJS. (n.d.). NestJS 공식문서. https://docs.nestjs.com